Over the past few decades, numerous advances in computing technology have provided many advantages to society, such as the ability to word process more efficiently than with a typewriter, to communicate relatively inexpensively with a cellular phone, to hold videoconferences with people from anywhere in the world, and to shop for and purchase goods and services without leaving our homes via the internet.
Although many new abilities have been made possible by the latest computing technology, many other abilities are desirable, but not practical due to unresolved security/trust issues. For example, an engineer needs to obtain a part at a price under a fixed cost to meet a budget constraint, but has limited time to shop around for the part. If the engineer could send a software program, also known as an agent, that contains the specifications for the part, the cost, required ship date, shipping address, and a credit card number to one or more stores that are known to sell the part, and the store(s)' computer would execute that program and send the part, the engineer would meet all time, price, and specification requirements. Unfortunately, the engineer would not know trust that the agent would be intercepted and misused, including stealing the credit card number. Similarly, the stores would not completely trust any software program to be loaded on their computer for execution, as such a program could easily carry a virus or cause other undesirable problems.
Accordingly, there is a need for a method and apparatus to provide software agent mobility in a trusted manner.